/**
 * Created by yangfan on 2016/10/25.
 */
define(['config/appregister',
    "i18n",
],function(app,i18n){
app.directive("uiClasstable",function($state){
        /*
        * 类表格数据渲染
        * */
       return {
           templateUrl:"app/business/services/comComponents/uiClassTable.html",
           scope:{
               conf:"=tableConf"
           },
           controller:function($scope){
               this.grade = $scope.conf.grade;
               this.key = $scope.conf.key;
           },
           link:function(scope,element,attrs){
               scope.i18n = i18n;
               var tableData = scope.conf.data;
               if( !angular.isArray(tableData)){
                   return
               }

               //get the num of list
               scope.listNum = scope.conf.listNum;
               //配置list num
               if(scope.listNum>2){
                   scope.isSmallTable = false;
               }else{
                   scope.isSmallTable = true;
               }

               scope.getListStyle ={
                "width":1/scope.listNum*100 +"%"
               };
               scope.key =scope.conf.listKey;

               scope.styleClass = function(grade,style){
                   if(scope.conf.grade ==1){
                       return style
                   }else{
                       return style
                   }
               };
               scope.getSrc =function(value,conf){
                   if(!value){
                       return
                   }
                 if(conf.key =="file"){
                     return ""
                 }else if(conf.key =="course"||conf.key=="skill"){
                     return conf.logoSrc;
                 }
               };
               scope.getTypeSrc = function(value){
                   if(!value) return ;
                   if(value == 'pdf'){
                       return 'them/images/compImages/logo-pdf.png'
                   }
                   if(value == 'dwg'){
                       return 'them/images/compImages/logo-dwg.png'
                   }
               };
               scope.clickTd = function(item){
                 if(scope.conf.key == "course"){
                     $state.go("eng.vedioDetails",{courseId:item.courseId})
                 }
                 if(scope.conf.key == "skill"){
                     $state.go("eng.workDetailsCtrl",{skillId:item.skillId})
                 }
                 if(scope.conf.key == "file"){
                     $state.go("eng.techdetail",{fileId:item.fileId})
                 }

               }

               /*
               * 提示  由于要适应表格种类较多， 会导致当前tr行数目不够 ， 因此最后一行不要底部边线  ，添加加载更多按钮border-top
               * */
               var index = 0;
               scope.isBottomBorder  =function(last){
                  if(last){
                      //index++;
                      return {
                          "border-bottom":"none"
                      }
                  }else {
                      return {
                          "border-bottom": "1px solid #ddd"
                      }
                  }

               };
               scope.loadMore =function(){
                   var grade = scope.conf.grade;
                   var currentPage = scope.conf.pageNo+1;
                       scope.conf.addMore(currentPage,grade);
               };
           }
       }
    }).directive("watchHeight",function(){
        return {
            restrict: 'EA',
            require:"^uiClasstable",
            scope:{
                last:"=index"
            },
            link:function(scope,element,attrs,ctrl){
                var key = ctrl.key;
                function compare(h1,h2){
                    if(!(typeof h1 =="number"&&typeof h2 =="number")){
                        retturn
                    }
                    if(h1>h2){
                        return h1
                    }else {
                        return h2
                    }
                }
                function getIndex(grade,key){
                    if(grade ==1 && key == "skill"){
                        return 1
                    }else if(grade ==1 && key == "course"){
                        return  0
                    }else if(grade ==2 &&key == "skill"){
                        return 3
                    }else if(grade ==2&&key == "course"){
                        return 2
                    }
                }
                var flag = scope.last;

                if(flag == true&&ctrl.grade ==1){
                    if(!$(".small-table")[0] ||!$(".small-table")[1]) return ;
                   var  h0 =  $(".small-table")[0].clientHeight;
                   var  h1 =  $(".small-table")[1].clientHeight;
                   scope.grade1Height = compare(h0,h1);
                    var index = getIndex(ctrl.grade,key);
                     // oh shit code !
                    scope.$watch("grade1Height",function(newValue,oldValue){
                        if(newValue){
                               $(".small-table")[index].style.height = compare($(".small-table")[0].clientHeight, $(".small-table")[1].clientHeight) + "px";
                        }
                    })
                }
                if(flag == true&&ctrl.grade ==2){
                    if(!$(".small-table")[2] || !$(".small-table")[3]) return ;
                    var h2 =  $(".small-table")[2].clientHeight;
                    var h3 =  $(".small-table")[3].clientHeight;
                    scope.grade2Height = compare(h2,h3);
                    var index = getIndex(ctrl.grade,key);
                    // oh shit code !
                    scope.$watch("grade2Height",function(newValue,oldValue){
                        if(newValue){
                            //$(".small-table")[index].style.height = compare($(".small-table")[2].clientHeight, $(".small-table")[3].clientHeight) + "px";
                            $(".small-table")[index].css('height',compare($(".small-table")[2].clientHeight, $(".small-table")[3].clientHeight))
                        }
                    })
                }
            }
        }
    });
    app.filter('qqface', function($sce){
        return function(input) {
            var face = ['/::)', '/::~', '/::B', '/::|', '/:8-)', '/::<', '/::$', '/::X', '/::Z', '/::\'(', '/::-|', '/::@', '/::P', '/::D', '/::O', '/::(', '/::+', '/:--b', '/::Q', '/::T', '/:,@P', '/:,@-D', '/::d', '/:,@o', '/::g', '/:|-)', '/::!', '/::L', '/::>', '/::,@', '/:,@f', '/::-S', '/:?', '/:,@x', '/:,@@', '/::8', '/:,@!', '/:!!!', '/:xx', '/:bye', '/:wipe', '/:dig', '/:handclap', '/:&-(', '/:B-)', '/:<@', '/:@>', '/::-O', '/:>-|', '/:P-(', '/::\'|', '/:X-)', '/::*', '/:@x', '/:8*', '/:pd', '/:<W>', '/:beer', '/:basketb', '/:oo', '/:coffee', '/:eat', '/:pig', '/:rose', '/:fade', '/:showlove', '/:heart', '/:break', '/:cake', '/:li', '/:bome', '/:kn', '/:footb', '/:ladybug', '/:shit', '/:moon', '/:sun', '/:gift', '/:hug', '/:strong', '/:weak', '/:share', '/:v', '/:@)', '/:jj', '/:@@', '/:bad', '/:lvu', '/:no', '/:ok', '/:love', '/:<L>', '/:jump', '/:shake', '/:<O>', '/:circle', '/:kotow', '/:turn', '/:skip', '/:oY', '/:#-0', '/hiphot', '/:kiss', '/:<&', '/:&>'],
                emojis = [
                    "bowtie", "smile", "laughing", "blush", "smiley", "relaxed",
                    "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed",
                    "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye",
                    "stuck_out_tongue_closed_eyes", "grinning", "kissing",
                    "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried",
                    "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed",
                    "expressionless", "unamused", "sweat_smile", "sweat",
                    "disappointed_relieved", "weary", "pensive", "disappointed", "confounded",
                    "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished",
                    "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy",
                    "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp",
                    "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart",
                    "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart",
                    "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid",
                    "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom",
                    "collision", "anger", "exclamation", "question", "grey_exclamation",
                    "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note",
                    "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown",
                    "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand",
                    "open_hands", "point_up", "point_down", "point_left", "point_right",
                    "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu",
                    "walking", "runner", "running", "couple", "family", "two_men_holding_hands",
                    "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good",
                    "information_desk_person", "raising_hand", "bride_with_veil",
                    "person_with_pouting_face", "person_frowning", "bow", "couplekiss",
                    "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl",
                    "woman", "man", "baby", "older_woman", "older_man",
                    "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban",
                    "construction_worker", "cop", "angel", "princess", "smiley_cat",
                    "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat",
                    "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre",
                    "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil",
                    "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes",
                    "nose", "tongue", "love_letter", "bust_in_silhouette",
                    "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood",
                    "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2",
                    "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud",
                    "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog",
                    "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear",
                    "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse",
                    "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird",
                    "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin",
                    "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus",
                    "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat",
                    "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2",
                    "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile",
                    "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet",
                    "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower",
                    "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom",
                    "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut",
                    "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians",
                    "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon",
                    "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon",
                    "full_moon", "waning_gibbous_moon", "last_quarter_moon",
                    "waning_crescent_moon", "last_quarter_moon_with_face",
                    "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas",
                    "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel",
                    "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags",
                    "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern",
                    "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell",
                    "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd",
                    "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer",
                    "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax",
                    "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega",
                    "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio",
                    "satellite", "loop", "mag", "mag_right", "unlock", "lock",
                    "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight",
                    "high_brightness", "low_brightness", "electric_plug", "battery", "calling",
                    "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet",
                    "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar",
                    "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray",
                    "outbox_tray", "envelope", "incoming_envelope", "postal_horn",
                    "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door",
                    "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up",
                    "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend",
                    "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date",
                    "card_index", "file_folder", "open_file_folder", "scissors", "pushpin",
                    "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler",
                    "closed_book", "green_book", "blue_book", "orange_book", "notebook",
                    "notebook_with_decorative_cover", "ledger", "books", "bookmark",
                    "name_badge", "microscope", "telescope", "newspaper", "football",
                    "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football",
                    "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing",
                    "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs",
                    "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard",
                    "violin", "space_invader", "video_game", "black_joker",
                    "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo",
                    "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone",
                    "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt",
                    "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash",
                    "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat",
                    "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse",
                    "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake",
                    "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass",
                    "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg",
                    "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi",
                    "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden",
                    "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream",
                    "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy",
                    "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon",
                    "cherries", "grapes", "watermelon", "strawberry", "peach", "melon",
                    "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn",
                    "house", "house_with_garden", "school", "office", "post_office", "hospital",
                    "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church",
                    "department_store", "european_post_office", "city_sunrise", "city_sunset",
                    "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower",
                    "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars",
                    "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow",
                    "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat",
                    "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter",
                    "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway",
                    "suspension_railway", "mountain_cableway", "tractor", "blue_car",
                    "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi",
                    "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car",
                    "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck",
                    "train", "station", "train2", "bullettrain_front", "bullettrain_side",
                    "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump",
                    "vertical_traffic_light", "traffic_light", "warning", "construction",
                    "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings",
                    "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai",
                    "circus_tent", "performing_arts", "round_pushpin",
                    "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru",
                    "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven",
                    "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols",
                    "arrow_backward", "arrow_down", "arrow_forward", "arrow_left",
                    "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right",
                    "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right",
                    "arrow_double_down", "arrow_double_up", "arrow_down_small",
                    "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook",
                    "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small",
                    "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward",
                    "information_source", "ok", "twisted_rightwards_arrows", "repeat",
                    "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko",
                    "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709",
                    "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens",
                    "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro",
                    "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place",
                    "secret", "congratulations", "m", "passport_control", "left_luggage",
                    "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign",
                    "underage", "no_mobile_phones", "do_not_litter", "non-potable_water",
                    "no_bicycles", "no_pedestrians", "children_crossing", "no_entry",
                    "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration",
                    "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange",
                    "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius",
                    "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus",
                    "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2",
                    "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1",
                    "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12",
                    "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4",
                    "clock430", "clock5", "clock530", "clock6", "clock630", "clock7",
                    "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign",
                    "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang",
                    "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign",
                    "heavy_minus_sign", "heavy_division_sign", "white_flower", "100",
                    "heavy_check_mark", "ballot_box_with_check", "radio_button", "link",
                    "curly_loop", "wavy_dash", "part_alternation_mark", "trident",
                    "black_square", "white_square", "white_check_mark", "black_square_button",
                    "white_square_button", "black_circle", "white_circle", "red_circle",
                    "large_blue_circle", "large_blue_diamond", "large_orange_diamond",
                    "small_blue_diamond", "small_orange_diamond", "small_red_triangle",
                    "small_red_triangle_down", "shipit"
                ],
                rEmojis = new RegExp(":(" + emojis.join("|") + "):", "g"),
                rFace = new RegExp("(/::\\)|/::~|/::B|/::\\||/:8-\\)|/::<|/::\\$|/::X|/::Z|/::'\\(|/::-\\||/::@|/::P|/::D|/::O|/::\\(|/::\\+|/:--b|/::Q|/::T|/:,@P|/:,@-D|/::d|/:,@o|/::g|/:\\|-\\)|/::!|/::L|/::>|/::,@|/:,@f|/::-S|/:\\?|/:,@x|/:,@@|/::8|/:,@!|/:!!!|/:xx|/:bye|/:wipe|/:dig|/:handclap|/:&-\\(|/:B-\\)|/:<@|/:@>|/::-O|/:>-\\||/:P-\\(|/::'\\||/:X-\\)|/::\\*|/:@x|/:8\\*|/:pd|/:<W>|/:beer|/:basketb|/:oo|/:coffee|/:eat|/:pig|/:rose|/:fade|/:showlove|/:heart|/:break|/:cake|/:li|/:bome|/:kn|/:footb|/:ladybug|/:shit|/:moon|/:sun|/:gift|/:hug|/:strong|/:weak|/:share|/:v|/:@\\)|/:jj|/:@@|/:bad|/:lvu|/:no|/:ok|/:love|/:<L>|/:jump|/:shake|/:<O>|/:circle|/:kotow|/:turn|/:skip|/:oY|/:#-0|/:hiphot|/:kiss|/:<&|/:&>)","g"),
                index = face.indexOf(input) + 1,
                bool1 = input.match(rEmojis),
                bool2 = input.search(rFace) || input.match(rFace);

            input = input.replace(/&amp;/g, '&')
                .replace(/&quot;/g, '"')
                .replace(/&#39;/g, '\'')
                .replace(/&lt;/g, '<')
                .replace(/&gt;/g, '>');

            return input.replace(rFace,function(match, text){
                var num = face.indexOf(match) + 1,
                    scripts = document.scripts,
                    jsName = "angular-qqface.js",
                    jsPath;
                for(var i = scripts.length;i > 0;i --){
                    //if(scripts[i-1].src.indexOf(jsName) >- 1){
                    //    jsPath=scripts[i-1].src.substring(0,scripts[i-1].src.lastIndexOf("/")+1);
                    //}
                };
                (num<10) && (num = "0"+num);
                //return "\<img src='" + jsPath + "face/" + num + "\.gif'\>";
                return $sce.trustAsHtml("\<img src='" + "them/face/" + num + "\.gif'\>") ;
                //return jsPath + "face/" + num + "\.gif";
            })
                .replace(rEmojis, function (match, text) {
                    return $sce.trustAsHtml("<i class='emoji emoji_" + text + "' title=':" + text + ":'>" + text + "</i>");
                })
        }
    });
    app.directive("uiSelect",function(){
        return {
            templateUrl:"app/business/services/comComponents/uiSelect.html",
            scope:{
                model:"=selectModel",
                value:"=selectValue",
                style:"=selectStyle",
                key:"=selectKey"
            },
            link:function(scope,element,attrs){
                scope.selectedValue = scope.value;
                if(!scope.value){
                    scope.selectedValue = "请选择";
                }
                if( typeof (scope.key)!="undefined"){
                    scope.curKey = scope.key;
                    if(toString.call(scope.value) == '[object Object]'&&scope.value.hasOwnProperty(scope.curKey)){
                        scope.selectedValue = scope.value[scope.curKey];
                    }
                }
                scope.isShow = false;
                scope.changeShow = function(){
                    if(angular.isArray(scope.model)){
                        scope.isArray = true;
                    }else{
                        scope.isArray = false;
                    }
                    scope.isShow = !scope.isShow;
                };
                scope.clickSelect = function(item){
                    if(typeof (scope.key)!="undefined"){
                        scope.value= item;
                        scope.selectedValue = item[scope.curKey];
                    }else{
                        scope.value= item;
                        scope.selectedValue = item;
                    }
                    scope.isShow = false;
                };
            }
        }
    });

});
